1. Field of the Invention
The invention relates to an error correction method for RLL codes. More particularly, the invention relates to correct channel bit error of RLL code with newly added demodulation rules.
2. Description of the Prior Art
Coding plays an important rule in digital systems, especially the digital communication and the data storage system. Generally speaking, coding techniques may divide into three categories: source coding, error control coding, and channel coding. The main purpose of source coding is to transform the information—from human, computer, or whatever—into digital data sequences (especially binary data), furthermore, compress them for reducing information entropy. Error control coding encodes the digital data sequence into a new data sequence that may detect or correct errors, thereby providing error protection for the data sequence. The objective of channel coding is to make the data sequence being able to transmit more efficiently upon communication channel and storage media. FIG. 1 illustrates the block diagram of a typical communication/storage system. As well as the drawing, error control coding is usually performed before channel coding. Hence, even the demodulated signals at receiver end contains error channel bits, the receiver end could detect/correct errors or reconstruct original data sequence as long as the error bits don't exceed the correction capability of an error control code.
As shown in FIG. 1, error correction for most communication/storage systems is usually performed in the error control decoding block and most channel codes have no error detection/correction capability. As mentioned in the foregoing descriptions, channel code is usually utilized for modulation, which makes data sequences transmitting with a higher transmission performance upon the communication channel or storage media. Gray code, for instance, is a simple and well-known coding technique, and it may be utilized as channel code, too. The main characteristics of the gray code is, each codeword has only 1 bit difference with a preceding codeword (such as the 3-bits gray code, if current codeword is 010, the succeeding codeword is limited to 011, 110, or 000). Because the gray code may apply to a phase shift keying (PSK) modulation for limiting the phase shift between consecutive signals and preventing 180°-phase reversion, it's suitable to some communication environments. Nowadays, though some coding techniques try to combine channel coding and error control coding together, such as continuous phase modulation (CPM), the distinction between error control coding and channel coding becomes more and more unobvious, but it's still under the impression that channel code has no error correction capability.
Run Length Limited (RLL) code is a famous channel coding technique. Because RLL encoded codeword reduces the transitions between bit “0” and “1”, possesses synchronization information itself, and decreases the DC components of data signals, it becomes the most famous channel coding technique for storage systems such as the CD/DVD disks and the computer hard disks. RLL code is usually represented as RLL(x,y), in which x, y are natural integers. Letter x represents the smallest running length and y represents the longest running length for a RLL codeword, in other words, the amount of “0” between two channel bits “1” for a RLL encoded codeword is at least “x” and at most “y”. For example, FIG. 2A depicts an encoding table of RLL (2,7) code. According to the table, a data sequence with values of 10001111 (divided as 10-0011-11) will be encoded as 0100-00001000-1000.
The relationships between the data sequence and its encoded codeword may combine as the demodulation rules, which is used to form the demodulation table of RLL code. When the receiving end receives a sequence of channel bits, the decoder decodes and reconstructs the original data sequence according to the demodulation rules of the demodulation table. For example, a data sequence D1=11011000 encodes into codeword C1=1000001000000100 in accordance with the encoding table of FIG. 2A. The demodulation table records the mapping between D1 and C1 as its demodulation rule, therefore when the receiving end receives the same codeword of C1, the demodulation table will decode it to data sequence D1.
In hard disk, a flux transition represents a channel bit “1”, the other is “0”. In CD/DVD disks, the transition between “pit” and “land” represents channel bit “1”, the others represent channel bit “0”. FIG. 2B depicts the mapping diagram of channel bit sequence 0100000010001000 upon the disk. “4T” means there are 4−1=3 “0”s, “7T” means there are 7−1=6 “0”s between two channel bits “1”. Channel bits upon a disk may be represented with the sequence of “nT”, suchlike 7T4T4T represents channel bit sequence 1000000100010001. Normal signal components of RLL (2,7) encoded codeword are between 3T to 8T. Currently, the most popular RLL code consists of RLL(1,7), RLL(2,7), and RLL(2,10) code, in which the smallest signals are 2T, 3T and 3T, the largest signals are 8T, 8T and 11T respectively. When the length of pit or land are too short or the pickup head of a DVD player has sampled the channel bit sequence with the running length smaller than the codeword limitation (i.e., samples 1T signal as encoding in RLL (1,7) code), the demodulated/detected channel bit sequence is “illegal”. If the RLL decoder decodes the “illegal” channel bit sequence directly by the original RLL decoding rules, it will result in incorrect data sequence.
Because RLL code has no error correction capability, it's essential to find another way for correcting RLL code before the error control coding operates. For concrete illustration, here takes RLL(1,7) code for example, in which 1T signal is the illegal signal component to the RLL(1,7) codeword. The regular methods for dealing with a 1T error comprise the first way, Ignore 1T error. It means, no matter if the 1T error exists or not, the RLL decoder still decodes it directly in accordance with the original decoding rules, thereby the decoded data sequence might be different with the original one. In general, the difference could be corrected by succeeding the error control decoding procedure, except the error amount exceeding the correction capability of the error control code.
Because the 1T signal is usually the improper detection result of an 2T signal (seldom 3T signal), the second way is to perform a 1T/2T signal conversion before the channel decoding procedure by increasing the 1T/2T correction circuit or modifying the firmware of the RLL decoder. Each time as receiving/reading a bit sequence, the 1T/2T correction detects if containing 1T signal. If yes, the 1T/2T correction circuit corrects the 1T signal into a 2T signal first and then the corrected bit sequence decoded by the original decoding table in after. The second way which performs 1T error correction before the RLL decoding reduces the error probability effectively, but the costs are that the decoder complexity and the decoding time (because the decoder “1T/2T correction circuit—” must determine if the received bit sequence contains illegal signal component all the time) is increased.
FIG. 3A and FIG. 3B depict the decoding architecture within ignoring 1T error and the decoding architecture with 1T/2T correction respectively, in which both demodulation tables remain the same and are not modified. If we could correct the illegal signal components of the RLL codeword to obtain error-less channel bit sequences without increasing any correction circuits, the error probability to the last obtained data/information after the error control decoding block (referring to FIG. 1) will be decreased effectively but without increasing the decoder complexity.